package Stream;

import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class StreamTest02 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();

        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");

        //需求1：取前3个数据在控制台输出
        /*list.stream().limit(3).forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });*/
        list.stream().limit(3).forEach(s-> System.out.println(s));
        System.out.println("-----------------------------------");
        //需求2：跳过3个元素，把剩下的元素在控制台输出
        list.stream().skip(3).forEach(s-> System.out.println(s));
        System.out.println("-----------------------------------");
        //需求3：跳过2个元素，把剩下的元素中前2个在控制台输出
        list.stream().skip(2).limit(2).forEach(s-> System.out.println(s));
        System.out.println("-----------------------------------");
        System.out.println("-----------------------------------");


        //需求4：取前4个数据组成一个流
        Stream<String> stream1 = list.stream().limit(4);
        //需求5：跳过2个数据组成一个流
        Stream<String> stream2 = list.stream().skip(2);
        //需求6：合并需求1和需求2得到的流，并把结果在控制台输出
//        Stream.concat(stream1, stream2).forEach(s-> System.out.println(s));
        //需求7：合并需求1和需求2得到的流，并把结果在控制台输出，要求字符串元素不能重复
        Stream.concat(stream1,stream2).distinct().forEach(s-> System.out.println(s));
        //返回此流中的元素个数
//        long count = Stream.concat(stream1, stream2).distinct().count();
//        System.out.println(count);
    }
}
